#include <iostream>

using namespace std;

// 默认私有
class student1
{
public:
    // 构造函数，在被创建对象时调用，不能有返回值
    student1()
    {
        cout << "我是不带参数的构造函数" << endl
             << endl;
        score = 0; // c++的变量不会主动初始化为0，可能会随便给一个垃圾值
        cout << "我的地址是" << this <<endl;
    }
    student1(int n)
    {
        cout << "我是带参数的构造函数" << endl;
        cout << "n==" << n << endl;
    }
    ~student1()
    {
        cout << " 对象被销毁" << endl
             << endl;
    }
    // 属性用变量
    char name[120];
    int score;
    int id;

    // 行为用函数
    // 形参给了默认值必须给他的右边也给默认值
    void exam(int a = 60, int b = 60, int c = 60)
    {
        score += a * 0.4 + b * 0.3 + c * 0.3;
        cout << "考试完成，成绩为：" << score << endl;
    }
};
// 默认共有
struct student2
{
    int id;

private:
    char name[120];
    int score;
};

int main(int argc, char const *argv[])
{
    //student1 stus[10](10); // 静态分配的类对象数组可以调带参数的构造函数
    // student1 *p=new student1[10](10);//动态分配的类对象数组不能调用带参数的构造函数
    // delete[] p;
    student1 stu1;
    cout << "地址是" << &stu1 << endl;
    return 0;
}